// pages/departList/departList.js
const app = getApp();
import CommonService from '../../utils/service/commonService.js';
import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast';
const util = require('../../utils/util');
import Base64 from '../../utils/Base64.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //当前登录用户
    user:{},
    //列表
    list:[],
    //页码
    page: 1,
    //是否无更多
    notMore: true,
    //无数据
    showNothing:false,
    //搜索关键词
    searchValue:'',
    //删除确认框
    showDelete:false,
    //删除的id
    deleteId:null,  
    //客户选择框
    showMember:false,
    //客户选择数据
    memberList:[],
    //选择的客户信息
    member:null,
    //用户权限
    authority:null,
    //搜索客户输入的值
    valueSearchMember:'',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //当前登录用户
    let user=	app.globalData.userInfo;
    this.setData({
      user: user,
      authority:app.globalData.authority
    })

    //客户只查自己的项目
    if(user.departObj[0].type==4){
      this.setData({
        member: user.departObj[0]
      })

      //获取项目数据
      this.getList();
    }else{
      //其他类型先获取一级部门再查下级项目
      this.getMemberList();
    }  
  },

  //获取列表数据
  getList(){
    Toast.loading({
      duration: 0,
      forbidClick: true,
      message: '加载中...'
    });

    let member=this.data.member;

    let param={
      isAuth:false,
      className:"depart",
      data:{
        name:"%"+this.data.searchValue+"%", 
        selectFields:["id","name","nickName","addressDetail","area"],
        complex:[{or:{"companyId":member.id,"fid":member.id}}],
        level:{
          '!=':1
        },
        page:{
          page:this.data.page,
          pageSize:10
        },
        sort:{id:-1},
        nbl:Base64.encode(util.timeFormatDay(new Date()))
      }
    }

    CommonService.goFindList(param).then(res=>{
      Toast.clear();
      if(res.data.data && res.data.data.result && res.data.data.result.length){
        let result=res.data.data.result;
        console.log('项目列表');
        console.log(result);

        this.setData({
          list: this.data.list.concat(result)
        })
      }else{
        this.setData({
          notMore: false
        })
        if(this.data.page==1){
          this.setData({
            showNothing: true
          })
        }else{
          Toast.fail('没有更多了');
        }
      }
    }).catch((error) => {
      this.setData({
        showNothing: true
      })
    })
  },

  //刷新列表和页码
  refreshListAndPage(){
    this.setData({
      list: [],
      page:1,
      notMore: true,
      showNothing: false
    })
    this.getList();
  },

  //获取搜索词
  onChangeSearch(e) {
    this.setData({
      searchValue: e.detail.value,
    })

    if(!e.detail.value){
      //刷新列表和页码
      this.refreshListAndPage();
    }
  },

  //点击搜索
  onSearch(){
    this.refreshListAndPage();
  },

  //跳转添加/编辑
  goToAdd(e){
    let member=this.data.member;
    let id=null;      

    if(e.currentTarget.dataset.detail){
      let detail=e.currentTarget.dataset.detail;
      id=detail.id;      
    }

    let obj={
      id: id,
      companyId: member.id,
      companyName: member.name
    }

    wx.navigateTo({
      url: "/pages/departAdd/departAdd?paramObj="+JSON.stringify(obj)
    })
  },

  //显示删除确认框
  onDelete(e){
    let detail=e.currentTarget.dataset.detail;
    this.setData({
      showDelete: true,
      deleteId:detail.id
		})
  },

  //隐藏删除确认框
  onCloseDelete(){
    this.setData({
			showDelete: false
		})
  },

  //确认删除
  confirmDelete(){
    let param={ 
      className:"depart",
      data:{
        id:this.data.deleteId
      }
    }

    CommonService.goDelete(param).then(res=>{
      if (res.statusCode == 200 && res.data.success == true){
        //刷新列表和页码
        this.refreshListAndPage();  
        
        //同步删除pcsql数据库
        this.deleteToPcsql(this.data.deleteId);
      }else{
        Toast.fail('操作失败');
      }
    }).catch((error) => {
      Toast.fail('操作失败');
    }) 
  },

  //显示客户选择框
  onShowMember(){
    this.setData({
			showMember: true
    })
  },

  //隐藏客户选择框
  onCloseMember(){
    this.setData({
			showMember: false
    })
  },

  //确认客户
  onConfirmMember(e){
    this.setData({
      member: e.detail.value.obj
    })
    this.onCloseMember();
    //获取项目数据
    this.refreshListAndPage();
  },

  //获取客户数据
  getMemberList(){
    let param={
      isAuth:true,
      className:'depart',
      data:{
        searchAll:true,
        level:1,
        complex:[{
          "or": {
            type:4,
            multiType:4
          }
        }],
        name:{
            '!=':''
        },
        selectFields:['id','name','companyId','partnerId','fid','level']
      }
    }

    //客户名称模糊查询
    if(this.data.valueSearchMember){
      param.data.name='%'+this.data.valueSearchMember+'%'      
    }

    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.count){
        let list=res.data.data.result;        
        let arr=[];
        for(let i=0;i<list.length;i++){
          let obj={
            text:list[i].name,
            id:list[i].id,
            obj:list[i]
          }
          arr.push(obj);
        }
        this.setData({ 
          memberList: arr,
          member:list[0]
        })

        //获取项目数据
        this.getList();
      }
    }).catch((error) => {
    })
  },

  //选择客户-搜索
  onChangeMemberName(e){
    this.setData({
      valueSearchMember: e.detail
    })

    //获取客户数据
    this.getMemberList();
  },

  //同步删除pcsql数据库
  deleteToPcsql(id){
    let param={
      id: id
    }
    CommonService.deleteDepart(param).then(res=>{
    }).catch((error) => {
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if(this.data.notMore){
      this.setData({
        page: this.data.page + 1
      })
      this.getList();
    }
  }
})